// 2025/7/21
// 最长无重复子数组

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
     *
     * 
     * @param arr int整型vector the array
     * @return int整型
     */
    int maxLength(vector<int>& arr) {
        // write code here
        unordered_set<int> record;
        int l = -1, r = 0, n = arr.size(), ans = 0;
        for(r = 0; r < n; r++)
        {
            if(record.count(arr[r]))
            {
                ans = max(ans, r - l - 1);
                while(arr[++l] != arr[r])
                    record.erase(arr[l]);
            }
            else 
            {
                record.emplace(arr[r]);
            }
        }
        ans = max(ans, r - l - 1);
        return ans;
    }
};